function Vue(options) {
  // this --->  vm
  let _data = (this.$data = options.data);
  /*
    数据代理：
        将data里的数据，放到vm上，放到vm上为了我们在组件中获取的时候，直接通过this.xxx获取数据
        内部使用的是Object.defineproperty实现的代理
         Object.keys(_data)  ['msg','user']
  */
  Object.keys(_data).forEach((key) => {
    this.proxy(key);
  });
}
Vue.prototype.proxy = function (key) {
  Object.defineProperty(this, key, {
    get() {
      return this.$data[key];
    },
    set(newVal) {
      this.$data[key] = newVal;
    },
  });
};
